/**
 * 2010(c) Copyright Oceansoft Information System Co.,LTD. All rights reserved.
 * <p>
 * Compile: JDK 1.6+
 * <p>
 * 版权所有(C)：江苏欧索软件有限公司
 * <p>
 * 公司名称：江苏欧索软件有限公司
 * <p>
 * 公司地址：中国苏州科技城青山路1号
 * <p>
 * 网址: http://www.oceansoft.com.cn
 * <p>
 * 作者: 090922(陈伟)
 * <p>
 * 文件名: com.oceansoft.mobile.econsole.modules.api.controller.AppsStoreController.java 
 * <p>
 * 类产生时间: 2014-5-6 上午 10:10
 * <p>
 * 负责人: 090922(陈伟)
 * <p>
 * Email:javacspring@gmail.com
 * <p>
 * 所在组 : 掌上公安应用平台
 * <p>
 * 所在部门: 开发部--手持技术部
 * <p>
 * <p>
 */
package com.oceansoft.mobile.econsole.modules.api.controller;

import java.util.Date;
import java.util.StringTokenizer;

import com.oceansoft.mobile.econsole.modules.apps.entity.AppDownload;
import com.oceansoft.mobile.econsole.modules.apps.entity.AppInfo;
import com.oceansoft.mobile.econsole.modules.apps.entity.Message;
import com.oceansoft.mobile.econsole.modules.apps.service.IAppInfoService;
import com.oceansoft.mobile.econsole.modules.base.controller.BaseController;
import com.oceansoft.mobile.econsole.modules.base.entity.Result;
import com.oceansoft.mobile.econsole.task.sms.StringUtil;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import static org.springframework.web.bind.annotation.RequestMethod.GET;

/**
 * 客户端应用管理
 *
 * @author: chenw
 * @time: 2014-5-6 上午 10:10
 */
@RestController
@RequestMapping("api/app")
public class ApiAppInfoController extends BaseController {

    @Resource
    IAppInfoService appInfoService;

    /**
     * 加载应用列表信息
     *
     * @param pageSize  PAGE_SIZE 加载全部应时将此值调整至最大
     * @param pageIndex PAGE_INDEX
     * @return 应用列表JSON数据
     */
    @RequestMapping(value = "{page_size}/{page_index}", method = GET)
    public Result loadAppList(@PathVariable("page_size") int pageSize, @PathVariable("page_index") int pageIndex) {
        return new Result(Result.SUCC, appInfoService.findPageForApp(pageSize, pageIndex, getLocalHostIP()));
    }
    
    /**
     * 加载应用列表信息 v2
     *
     * @param pageSize  PAGE_SIZE 加载全部应时将此值调整至最大
     * @param pageIndex PAGE_INDEX
     * @return 应用列表JSON数据
     */
    @RequestMapping(value = "v2/{page_size}/{page_index}", method = GET)
    public Result loadAppListV2(@PathVariable("page_size") int pageSize, @PathVariable("page_index") int pageIndex) {
        return new Result(Result.SUCC, appInfoService.findPageForAppV2(pageSize, pageIndex, getLocalHostIP()));
    }
    

    /**
     * 加载默认应用插件列表
     *
     * @return 默认应用插件列表JSON对象
     */
    @RequestMapping(value = "plugins/default", method = GET)
    public Result loadDefaultAppList() {
        return appInfoService.findDefaultAppPlugins();
    }

    /**
     * 加载指定编号应用信息
     *
     * @param id 应用编号
     * @return 应用详细信息
     */
    @RequestMapping(value = "{app_id}", method = GET)
    public Result loadAppById(@PathVariable("app_id") int id) {
        AppInfo rt = appInfoService.findAppBaseInfoById(id);
        if (null != rt) {
            rt.setIcon(configInfo.getFileDownloadUrl(rt.getIcon()));
            rt.setImgPath(configInfo);
        }
        return new Result(rt);
    }

    /**
     * 加载菜单图文消息
     *
     * @param menuId 菜单编号
     * @return 图文消息
     */
    @RequestMapping(value = "menu/{menu_id}", method = GET)
    public Result loadMenuMessage(@PathVariable("menu_id") int menuId) {
        Message rt = appInfoService.findMessageByMenuId(menuId);
        return new Result(rt);
    }
    
    
    @RequestMapping(value="download", method={org.springframework.web.bind.annotation.RequestMethod.GET})
    public Result downLoadApi(HttpServletRequest request, HttpServletResponse response){
    		//得到用户的浏览器名  
   		String cb = request.getHeader("User-Agent"); 
        String client = "";
	    String ipaddr = request.getRemoteAddr();
	 
	    AppDownload ad = new AppDownload();
	    ad.setClientBrowser(cb);
	    ad.setClienTnet(client);
	    ad.setIpAddr(ipaddr);
	    ad.setCreateTime(new Date());
	    if(request.getParameter("type") != null){
	    	ad.setType(Integer.parseInt(request.getParameter("type")));
	    }
	    appInfoService.insertAppDownload(ad);
	    return new Result();
    }
}